home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / t_sys5 / unixkit.tgz / unixkit.tar / unixkit / tundrvr / tund / lcd.c < prev    next >
C/C++ Source or Header  |  1989-02-24  |  16KB  |  678 lines

  1. /* lcd.c - log cause and diagnostic bytes */
  2.  
  3. #ifndef lint
  4. static char Rcsid[] = "@(#) $Header: lcd.c,v 1.3 88/07/11 08:28:54 jpo Exp $";
  5. #endif
  6.  
  7. /*
  8.  * $Header: lcd.c,v 1.3 88/07/11 08:28:54 jpo Exp $
  9.  *
  10.  * This routine shamelessly stolen from ISODE. I think John Pavel must be
  11.  * creditted with this routine.
  12.  *
  13.  * $Log:    lcd.c,v $
  14.  * Revision 1.3  88/07/11  08:28:54  jpo
  15.  * Some tidying up
  16.  * 
  17.  * Revision 1.2  87/11/04  15:07:19  jpo
  18.  * Touch up
  19.  * 
  20.  * 
  21.  * Revision 1.1  87/11/04  14:43:52  jpo
  22.  * Initial revision
  23.  * 
  24.  *
  25.  */
  26.  
  27. #include "tund.h"
  28.  
  29. int    log_cause_and_diag(fd)
  30. int fd;
  31. {
  32.     X25_CAUSE_DIAG    diag;
  33.  
  34.     if (ioctl(fd, X25_RD_CAUSE_DIAG, &diag) < 0) {
  35.     advise ("ioctl", LOG_INFO, "X25_RD_CAUSE_DIAG failed");
  36.     return NOTOK;
  37.     }
  38. #ifdef DEBUG
  39.     advise (NULLCP, LOG_DEBUG, "Call cleared");
  40. #endif
  41.  
  42.     if (diag.flags & (1 << RECV_DIAG)) {
  43.     advise (NULLCP, LOG_INFO, "call %s: 0x%2x 0x%2x",
  44.         ((diag.flags) & (1 << DIAG_TYPE)) ? "cleared"
  45.                           : "reset",
  46.         diag.data[0], diag.data[1]);
  47.  
  48.     if ((diag.flags) & (1 << DIAG_TYPE)) /* cleared */
  49.              switch(diag.data[0]) {
  50.         case 0x00:
  51.         advise(NULLCP, LOG_INFO, "clearing cause DTE Clearing");
  52.         break;
  53.  
  54.         case 0x01:
  55.         advise(NULLCP, LOG_INFO, "clearing cause Number Busy");
  56.         break;
  57.         case 0x09:
  58.         advise(NULLCP, LOG_INFO, "clearing cause Out of Order");
  59.         break;
  60.         case 0x11:
  61.         advise(NULLCP, LOG_INFO, "clearing cause Remote Procedure Error");
  62.         break;
  63.         case 0x19:
  64.         advise(NULLCP, LOG_INFO, "clearing cause Reverse Charging not subscribed");
  65.         break;
  66.  
  67.         case 0x03:
  68.         advise(NULLCP, LOG_INFO, "clearing cause Invalid Facility Request");
  69.         break;
  70.         case 0x0B:
  71.         advise(NULLCP, LOG_INFO, "clearing cause Access Barred");
  72.         break;
  73.         case 0x13:
  74.         advise(NULLCP, LOG_INFO, "clearing cause Local Procedure Error");
  75.         break;
  76.  
  77.         case 0x05:
  78.         advise(NULLCP, LOG_INFO, "clearing cause Network Congestion");
  79.         break;
  80.         case 0x0D:
  81.         advise(NULLCP, LOG_INFO, "clearing cause Not Obtainable");
  82.         break;
  83.  
  84.         case 0x21:
  85.         advise(NULLCP, LOG_INFO, "clearing cause DTE Incompatible Call");
  86.         break;
  87.  
  88.         case 0x29:
  89.         advise(NULLCP, LOG_INFO, "clearing cause Fast Select Acceptance not Subscribed");
  90.         break;
  91.         default:
  92.         advise(NULLCP, LOG_INFO, "clearing cause 0x2%x", diag.data[0]);
  93.         break;
  94.     }
  95.     else /* reset */
  96.         switch(diag.data[0]) {
  97.         case 0x00:
  98.         advise(NULLCP, LOG_INFO, "resetting cause DTE Reset");
  99.         break;
  100.         case 0x01:
  101.         advise(NULLCP, LOG_INFO, "resetting cause Out of Order (PVC Only)");
  102.         break;
  103.         case 0x03:
  104.         advise(NULLCP, LOG_INFO, "resetting cause Remote Procedure Error");
  105.         break;
  106.         case 0x05:
  107.         advise(NULLCP, LOG_INFO, "resetting cause Local Procedure Error");
  108.         break;
  109.         case 0x07:
  110.         advise(NULLCP, LOG_INFO, "resetting cause Network Congestion");
  111.         break;
  112.         case 0x09:
  113.         advise(NULLCP, LOG_INFO, "resetting cause Remote DTE Operational (PVC Only)");
  114.         break;
  115.         case 0x0F:
  116.         advise(NULLCP, LOG_INFO, "resetting cause Network Operational (PVC Only");
  117.         break;
  118.         default:
  119.         advise(NULLCP, LOG_INFO, "resetting cause 0x%2x", diag.data[0]);
  120.         break;
  121.     }
  122.  
  123.     /* The following may only be applicable to PSS in the UK */
  124.     /* In any case, if someone is keen, they can stuff it all
  125.        into a text file and read it out */
  126.  
  127.         switch (diag.data[1]) {
  128.     case 0x00: 
  129.     advise(NULLCP, LOG_INFO, "diagnostic NO ADDITIONAL INFORMATION");
  130.     break;
  131.  
  132.     case 0x01: 
  133.     advise(NULLCP, LOG_INFO, "diagnostic INVALID P(S)\tRESET");
  134.     break;
  135.  
  136.     case 0x02: 
  137.     advise(NULLCP, LOG_INFO, "diagnostic INVALID P(R)\tRESET");
  138.     break;
  139.  
  140.     case 0x11: 
  141.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE r1\tRESTART");
  142.     break;
  143.  
  144.     case 0x12: 
  145.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE r2\tRESTART");
  146.     break;
  147.  
  148.     case 0x13: 
  149.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE r3\tRESTART");
  150.     break;
  151.  
  152.     case 0x14: 
  153.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p1\tCLEAR");
  154.     break;
  155.  
  156.     case 0x15: 
  157.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p2\tCLEAR");
  158.     break;
  159.  
  160.     case 0x16: 
  161.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p3\tCLEAR");
  162.     break;
  163.  
  164.     case 0x17: 
  165.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p4\tCLEAR");
  166.     break;
  167.  
  168.     case 0x18: 
  169.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p5\tRESET");
  170.     break;
  171.  
  172.     case 0x19: 
  173.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p6\tCLEAR");
  174.     break;
  175.  
  176.     case 0x1A: 
  177.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE p7\tCLEAR");
  178.     break;
  179.  
  180.     case 0x1B: 
  181.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE d1\tRESET");
  182.     break;
  183.  
  184.     case 0x1C: 
  185.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE d2\tRESET");
  186.     break;
  187.  
  188.     case 0x1D: 
  189.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE INVALID FOR STATE d3\tRESET");
  190.     break;
  191.  
  192.     case 0x20: 
  193.     advise(NULLCP, LOG_INFO, "diagnostic PACKET NOT ALLOWED");
  194.     break;
  195.  
  196.     case 0x21: 
  197.     advise(NULLCP, LOG_INFO, "diagnostic UNIDENTIFIABLE PACKET");
  198.     break;
  199.  
  200.     case 0x22: 
  201.     advise(NULLCP, LOG_INFO, "diagnostic CALL ON ONE-WAY LOGICAL CHANNEL\tCLEAR");
  202.     break;
  203.  
  204.     case 0x23: 
  205.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET TYPE ON PVC\tRESET");
  206.     break;
  207.  
  208.     case 0x24: 
  209.     advise(NULLCP, LOG_INFO, "diagnostic PACKET ON UNASSIGNED LCN\tCLEAR");
  210.     break;
  211.  
  212.     case 0x25: 
  213.     advise(NULLCP, LOG_INFO, "diagnostic REJECT NOT SUBSCRIBED TO\tRESET");
  214.     break;
  215.  
  216.     case 0x26: 
  217.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TOO SHORT\tRESET");
  218.     break;
  219.  
  220.     case 0x27: 
  221.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TOO LONG\tRESET");
  222.     break;
  223.  
  224.     case 0x28: 
  225.     advise(NULLCP, LOG_INFO, "diagnostic INVALID GFI\tCLEAR");
  226.     break;
  227.  
  228.     case 0x29: 
  229.     advise(NULLCP, LOG_INFO, "diagnostic RESTART WITH NON-ZERO BITS 5-16");
  230.     break;
  231.  
  232.     case 0x2A: 
  233.     advise(NULLCP, LOG_INFO, "diagnostic PACKET TYPE NOT COMPATIBLE WITH FACILITY\tCLEAR");
  234.     break;
  235.  
  236.     case 0x2B: 
  237.     advise(NULLCP, LOG_INFO, "diagnostic UNAUTHORISED INTERRUPT CONF\tRESET");
  238.     break;
  239.  
  240.     case 0x2C: 
  241.     advise(NULLCP, LOG_INFO, "diagnostic UNAUTHORISED INTERRUPT\tRESET");
  242.     break;
  243.  
  244.     case 0x31: 
  245.     advise(NULLCP, LOG_INFO, "diagnostic TIMER EXPIRED;  INCOMING CALL");
  246.     break;
  247.  
  248.     case 0x32: 
  249.     advise(NULLCP, LOG_INFO, "diagnostic TIMER EXPIRED;\tCLEAR INDICATION");
  250.     break;
  251.  
  252.     case 0x33: 
  253.     advise(NULLCP, LOG_INFO, "diagnostic TIMER EXPIRED;\tRESET INDICATION");
  254.     break;
  255.  
  256.     case 0x34: 
  257.     advise(NULLCP, LOG_INFO, "diagnostic TIMER EXPIRED;\tRESTART IND");
  258.     break;
  259.  
  260.     case 0x40: 
  261.     advise(NULLCP, LOG_INFO, "diagnostic UNSPECIFIED CALL SET-UP PROBLEM CLEAR");
  262.     break;
  263.  
  264.     case 0x41: 
  265.     advise(NULLCP, LOG_INFO, "diagnostic FACILITY CODE NOT ALLOWED\tCLEAR");
  266.     break;
  267.  
  268.     case 0x42: 
  269.     advise(NULLCP, LOG_INFO, "diagnostic FACILITY PARAMETER NOT ALLOWED\tCLEAR");
  270.     break;
  271.  
  272.     case 0x43: 
  273.     advise(NULLCP, LOG_INFO, "diagnostic INVALID CALLED ADDRESS\tCLEAR");
  274.     break;
  275.  
  276.     case 0x44: 
  277.     advise(NULLCP, LOG_INFO, "diagnostic INVALID CALLING ADDRESS\tCLEAR");
  278.     break;
  279.  
  280.     case 0x90: 
  281.     advise(NULLCP, LOG_INFO, "diagnostic DTE/DCE CONGESTION\tRESET");
  282.     break;
  283.  
  284.     case 0x91: 
  285.     advise(NULLCP, LOG_INFO, "diagnostic RECEIVED FAST SELECT CLEAR REQUEST");
  286.     break;
  287.  
  288.     case 0x92: 
  289.     advise(NULLCP, LOG_INFO, "diagnostic LINE RESTARTING BY INMC COMMAND\tRESTART");
  290.     break;
  291.  
  292.     case 0xA0: 
  293.     advise(NULLCP, LOG_INFO, "diagnostic NON-ZERO RESET CAUSE FROM DTE\tRESET");
  294.     break;
  295.  
  296.     case 0xA1: 
  297.     advise(NULLCP, LOG_INFO, "diagnostic DATA PACKET TOO LONG\tRESET");
  298.     break;
  299.  
  300.     case 0xA2: 
  301.     advise(NULLCP, LOG_INFO, "diagnostic INTERRUPT PACKET TOO LONG\tRESET");
  302.     break;
  303.  
  304.     case 0xA3: 
  305.     advise(NULLCP, LOG_INFO, "diagnostic INT PACKET TOO SHORT; NO USER DATA\tRESET");
  306.     break;
  307.  
  308.     case 0xA4: 
  309.     advise(NULLCP, LOG_INFO, "diagnostic INT CONFIRMATION PACKET TOO LONG\tRESET");
  310.     break;
  311.  
  312.     case 0xA5: 
  313.     advise(NULLCP, LOG_INFO, "diagnostic RR PACKET TOO LONG\tRESET");
  314.     break;
  315.  
  316.     case 0xA6: 
  317.     advise(NULLCP, LOG_INFO, "diagnostic RNR PACKET TOO LONG\tRESET");
  318.     break;
  319.  
  320.     case 0xA7: 
  321.     advise(NULLCP, LOG_INFO, "diagnostic RESET PACKET TOO LONG\tRESET");
  322.     break;
  323.  
  324.     case 0xA8: 
  325.     advise(NULLCP, LOG_INFO, "diagnostic RESET CONF PACKET TOO LONG\tRESET");
  326.     break;
  327.  
  328.     case 0xA9: 
  329.     advise(NULLCP, LOG_INFO, "diagnostic INVALID `Q' BIT IN DATA PACKET\tRESET");
  330.     break;
  331.  
  332.     case 0xAA: 
  333.     advise(NULLCP, LOG_INFO, "diagnostic PACKET WINDOW RANGE EXCEEDED\tRESET");
  334.     break;
  335.  
  336.     case 0xAB: 
  337.     advise(NULLCP, LOG_INFO, "diagnostic UNABLE TO TRANSMIT PACKET\tRESET");
  338.     break;
  339.  
  340.     case 0xAC: 
  341.     advise(NULLCP, LOG_INFO, "diagnostic `Q' BIT SET IN NON-DATA PACKET\tRESET");
  342.     break;
  343.  
  344.     case 0xAD: 
  345.     advise(NULLCP, LOG_INFO, "diagnostic OUTSTANDING PACKET COUNT LESS THAN ZERO\tRESET");
  346.     break;
  347.  
  348.     case 0xAE: 
  349.     advise(NULLCP, LOG_INFO, "diagnostic RETRANSMISSION ERROR\tRESET");
  350.     break;
  351.  
  352.     case 0xAF: 
  353.     advise(NULLCP, LOG_INFO, "diagnostic RESET PACKET TOO SHORT (NO CAUSE)\tRESET");
  354.     break;
  355.  
  356.     case 0xB0: 
  357.     advise(NULLCP, LOG_INFO, "diagnostic REJECT PACKET TOO LONG\tRESET");
  358.     break;
  359.  
  360.     case 0xB1: 
  361.     advise(NULLCP, LOG_INFO, "diagnostic INVALID 1D PACKET\tRESET");
  362.     break;
  363.  
  364.     case 0xB2: 
  365.     advise(NULLCP, LOG_INFO, "diagnostic UNSUCCESSFUL RECONNECTION RESNC\tCLEAR");
  366.     break;
  367.  
  368.     case 0xB3: 
  369.     advise(NULLCP, LOG_INFO, "diagnostic NON-RECONNECT CALL IN STATE C1\tCLEAR");
  370.     break;
  371.  
  372.     case 0xB4: 
  373.     advise(NULLCP, LOG_INFO, "diagnostic SECOND 1D PACKET FROM DTE\tCLEAR");
  374.     break;
  375.  
  376.     case 0xB5: 
  377.     advise(NULLCP, LOG_INFO, "diagnostic BAD DATA TRANSFER STATE IN RECONNECT\tCLEAR");
  378.     break;
  379.  
  380.     case 0xB6: 
  381.     advise(NULLCP, LOG_INFO, "diagnostic PACKET FORMAT INVALID\tCLEAR");
  382.     break;
  383.  
  384.     case 0xB7: 
  385.     advise(NULLCP, LOG_INFO, "diagnostic FACILITY BYTE COUNT TOO LARGE\tCLEAR");
  386.     break;
  387.  
  388.     case 0xB8: 
  389.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET DETECTED\tCLEAR");
  390.     break;
  391.  
  392.     case 0xB9: 
  393.     advise(NULLCP, LOG_INFO, "diagnostic FACILITY/UTILITY FIELD BYTE COUNT > 63\tCLEAR");
  394.     break;
  395.  
  396.     case 0xBA: 
  397.     advise(NULLCP, LOG_INFO, "diagnostic OUTGOING CALLS BARRED\tCLEAR");
  398.     break;
  399.  
  400.     case 0xBB: 
  401.     advise(NULLCP, LOG_INFO, "diagnostic INCOMING CALLS BARRED\tCLEAR");
  402.     break;
  403.  
  404.     case 0xBC: 
  405.     advise(NULLCP, LOG_INFO, "diagnostic CLEARING OF PVC\tCLEAR");
  406.     break;
  407.  
  408.     case 0xBD: 
  409.     advise(NULLCP, LOG_INFO, "diagnostic CALLED ADDRESS TOO LONG\tCLEAR");
  410.     break;
  411.  
  412.     case 0xBE: 
  413.     advise(NULLCP, LOG_INFO, "diagnostic CALLED ADDRESS TOO SHORT\tCLEAR");
  414.     break;
  415.  
  416.     case 0xBF: 
  417.     advise(NULLCP, LOG_INFO, "diagnostic CALLING ADDRESS TOO LONG\tCLEAR");
  418.     break;
  419.  
  420.     case 0xC0: 
  421.     advise(NULLCP, LOG_INFO, "diagnostic CALLING ADDRESS TOO SHORT\tCLEAR");
  422.     break;
  423.  
  424.     case 0xC1: 
  425.     advise(NULLCP, LOG_INFO, "diagnostic BCD ERROR IN CALL ADDRESS\tCLEAR");
  426.     break;
  427.  
  428.     case 0xC2: 
  429.     advise(NULLCP, LOG_INFO, "diagnostic BCD ERROR IN CALLING ADDRESS\tCLEAR");
  430.     break;
  431.  
  432.     case 0xC3: 
  433.     advise(NULLCP, LOG_INFO, "diagnostic USER DATA FIELD TOO LONG\tCLEAR");
  434.     break;
  435.  
  436.     case 0xC4: 
  437.     advise(NULLCP, LOG_INFO, "diagnostic NO BUFFER AVAILABLE\tCLEAR");
  438.     break;
  439.  
  440.     case 0xC5: 
  441.     advise(NULLCP, LOG_INFO, "diagnostic LOCAL DTE IS NOT ENHANCED\tCLEAR");
  442.     break;
  443.  
  444.     case 0xC6: 
  445.     advise(NULLCP, LOG_INFO, "diagnostic FACILITY NEGOTIATION INVALID\tCLEAR");
  446.     break;
  447.  
  448.     case 0xC7: 
  449.     advise(NULLCP, LOG_INFO, "diagnostic MANDATORY UTILITY NOT INPUT\tCLEAR");
  450.     break;
  451.  
  452.     case 0xC8: 
  453.     advise(NULLCP, LOG_INFO, "diagnostic BUFFER NO AVAILABLE FOR TNIC\tCLEAR");
  454.     break;
  455.  
  456.     case 0xC9: 
  457.     advise(NULLCP, LOG_INFO, "diagnostic OVERFLOW OF TNIC IN BUFFER\tCLEAR");
  458.     break;
  459.  
  460.     case 0xCA: 
  461.     advise(NULLCP, LOG_INFO, "diagnostic DTE LINECONGESTED\tCLEAR");
  462.     break;
  463.  
  464.     case 0xCB: 
  465.     advise(NULLCP, LOG_INFO, "diagnostic TABLE ERROR IN PACKET PROCEDURES");
  466.     break;
  467.  
  468.     case 0xCC: 
  469.     advise(NULLCP, LOG_INFO, "diagnostic INSERT TABLE OVERFLOW");
  470.     break;
  471.  
  472.     case 0xCD: 
  473.     advise(NULLCP, LOG_INFO, "diagnostic DELETE TABLE OVERFLOW");
  474.     break;
  475.  
  476.     case 0xD0: 
  477.     advise(NULLCP, LOG_INFO, "diagnostic TRUNK LINE RESTART\tRESTART");
  478.     break;
  479.  
  480.     case 0xD1: 
  481.     advise(NULLCP, LOG_INFO, "diagnostic INVALID EVENT IN STATE p2");
  482.     break;
  483.  
  484.     case 0xD2: 
  485.     advise(NULLCP, LOG_INFO, "diagnostic INVALID EVENT IN STATE p3");
  486.     break;
  487.  
  488.     case 0xD3: 
  489.     advise(NULLCP, LOG_INFO, "diagnostic INVALID 1D EVENT IN STATE d1");
  490.     break;
  491.  
  492.     case 0xD4: 
  493.     advise(NULLCP, LOG_INFO, "diagnostic CALL COLLISION ON TRUNK LINE");
  494.     break;
  495.  
  496.     case 0xD5: 
  497.     advise(NULLCP, LOG_INFO, "diagnostic NO BUFFER AVAILABLE");
  498.     break;
  499.  
  500.     case 0xD6: 
  501.     advise(NULLCP, LOG_INFO, "diagnostic CALL COLLISION ON DTE LINE");
  502.     break;
  503.  
  504.     case 0xD7: 
  505.     advise(NULLCP, LOG_INFO, "diagnostic DTE RESTART");
  506.     break;
  507.  
  508.     case 0xD8: 
  509.     advise(NULLCP, LOG_INFO, "diagnostic CALL REQUEST TO TRUNK LINE TIMEOUT");
  510.     break;
  511.  
  512.     case 0xD9: 
  513.     advise(NULLCP, LOG_INFO, "diagnostic RECONNECT SET-UP TIMED OUT");
  514.     break;
  515.  
  516.     case 0xDA: 
  517.     advise(NULLCP, LOG_INFO, "diagnostic INVALID OUTPUT SIDE STATE");
  518.     break;
  519.  
  520.     case 0xDB: 
  521.     advise(NULLCP, LOG_INFO, "diagnostic ERROR DETECTED IN BLINK PACKET QUEUE PROCEDURE");
  522.     break;
  523.  
  524.     case 0xDC: 
  525.     advise(NULLCP, LOG_INFO, "diagnostic RESET INDICATION RETRANSMISSION COUNT EXPIRED");
  526.     break;
  527.  
  528.     case 0xDD: 
  529.     advise(NULLCP, LOG_INFO, "diagnostic INVALID OUTPUT SIDE STATE");
  530.     break;
  531.  
  532.     case 0xDE: 
  533.     advise(NULLCP, LOG_INFO, "diagnostic BLIND BUFFER QUEUE OVERFLOW IN STATE d4");
  534.     break;
  535.  
  536.     case 0xDF: 
  537.     advise(NULLCP, LOG_INFO, "diagnostic BLIND BUFFER QUEUE OVERFLOW IN STATE c1");
  538.     break;
  539.  
  540.     case 0xE0: 
  541.     advise(NULLCP, LOG_INFO, "diagnostic BLIND BUFFER QUEUE OVERFLOW IN STATE c2");
  542.     break;
  543.  
  544.     case 0xE1: 
  545.     advise(NULLCP, LOG_INFO, "diagnostic CLEAR PACKET BYTE COUNT TOO LARGE OR TOO SMALL");
  546.     break;
  547.  
  548.     case 0xE2: 
  549.     advise(NULLCP, LOG_INFO, "diagnostic NON-ZERO\tCLEAR CAUSE");
  550.     break;
  551.  
  552.     case 0xE3: 
  553.     advise(NULLCP, LOG_INFO, "diagnostic CLEAR CONF PACKET BYTE COUNT TOO SMALL OR TOO LARGE");
  554.     break;
  555.  
  556.     case 0xE4: 
  557.     advise(NULLCP, LOG_INFO, "diagnostic CALL COLLISION");
  558.     break;
  559.  
  560.     case 0xE5: 
  561.     advise(NULLCP, LOG_INFO, "diagnostic INVALID TP LOAD REQUEST CALL PKT");
  562.     break;
  563.  
  564.     case 0xE6: 
  565.     advise(NULLCP, LOG_INFO, "diagnostic MAXIMUM HOPCOUNT EXCEEDED");
  566.     break;
  567.  
  568.     case 0xE7: 
  569.     advise(NULLCP, LOG_INFO, "diagnostic ROUTING LOOP DETECTED");
  570.     break;
  571.  
  572.     case 0xE8: 
  573.     advise(NULLCP, LOG_INFO, "diagnostic PVC CALL REQUEST FAILURE");
  574.     break;
  575.  
  576.     case 0xE9: 
  577.     advise(NULLCP, LOG_INFO, "diagnostic RECONNECT CALL REQUEST FAILED");
  578.     break;
  579.  
  580.     case 0xEA: 
  581.     advise(NULLCP, LOG_INFO, "diagnostic NO LC AVAILABLE ON OUTPUT SIDE");
  582.     break;
  583.  
  584.     case 0xEB: 
  585.     advise(NULLCP, LOG_INFO, "diagnostic NO BUFFER AVAILABLE");
  586.     break;
  587.  
  588.     case 0xEC: 
  589.     advise(NULLCP, LOG_INFO, "diagnostic CALL REDIRECTION CLEAR");
  590.     break;
  591.  
  592.     case 0xED: 
  593.     advise(NULLCP, LOG_INFO, "diagnostic NO PATH ROUTE CALL");
  594.     break;
  595.  
  596.     case 0xEE: 
  597.     advise(NULLCP, LOG_INFO, "diagnostic CALL ROUTED TO DTE LINE");
  598.     break;
  599.  
  600.     case 0xEF: 
  601.     advise(NULLCP, LOG_INFO, "diagnostic CALL CANNOT BE REROUTED");
  602.     break;
  603.  
  604.     case 0xF0: 
  605.     advise(NULLCP, LOG_INFO, "diagnostic ADDRESS NOT IN ROUTING TABLES");
  606.     break;
  607.  
  608.     case 0xF1: 
  609.     advise(NULLCP, LOG_INFO, "diagnostic ROUTING TABLE CHANGE DURING CALL ROUTING");
  610.     break;
  611.  
  612.     case 0xF2: 
  613.     advise(NULLCP, LOG_INFO, "diagnostic NO LC AVAILABLE ON FAKE TRUNK");
  614.     break;
  615.  
  616.     case 0xF3: 
  617.     advise(NULLCP, LOG_INFO, "diagnostic REMOTE DTE DOWN ON A PVC");
  618.     break;
  619.  
  620.     case 0xF4: 
  621.     advise(NULLCP, LOG_INFO, "diagnostic INVALID EVENT DETECTED");
  622.     break;
  623.  
  624.     case 0xF5: 
  625.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET RECEIVED; STATE d4");
  626.     break;
  627.  
  628.     case 0xF6: 
  629.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET RECEIVED; STATE d5");
  630.     break;
  631.  
  632.     case 0xF7: 
  633.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET RECEIVED; STATE p8");
  634.     break;
  635.  
  636.     case 0xF8: 
  637.     advise(NULLCP, LOG_INFO, "diagnostic INTERNAL PROCESSING FAILURE");
  638.     break;
  639.  
  640.     case 0xF9: 
  641.     advise(NULLCP, LOG_INFO, "diagnostic INVALID RESTART INDICATION");
  642.     break;
  643.  
  644.     case 0xFA: 
  645.     advise(NULLCP, LOG_INFO, "diagnostic LINE STATUS CHANGE IN STATE r4");
  646.     break;
  647.  
  648.     case 0xFB: 
  649.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET RECEIVED; STATE r4");
  650.     break;
  651.  
  652.     case 0xFC: 
  653.     advise(NULLCP, LOG_INFO, "diagnostic INVALID PACKET RECEIVED; STATE r3");
  654.     break;
  655.  
  656.     case 0xFD: 
  657.     advise(NULLCP, LOG_INFO, "diagnostic LINE STATUS CHANGE IN STATE r2");
  658.     break;
  659.  
  660.     case 0xFE: 
  661.     advise(NULLCP, LOG_INFO, "diagnostic LINE STATUS CHANGE IN STATE r1");
  662.     break;
  663.  
  664.     case 0xFF: 
  665.     advise(NULLCP, LOG_INFO, "diagnostic LINE STATUS CHANGE IN STATE r0");
  666.     break;
  667.  
  668.     default:
  669.     advise(NULLCP, LOG_INFO, "diagnostic: 0x%2x", diag.data[1]);
  670.     break;
  671.         }
  672.     }
  673.     else /* Not RECV_DIAG */
  674.         if (diag.flags)
  675.         advise (NULLCP, LOG_INFO, "diag flags: 0x%2x", diag.flags);
  676.     return 0;
  677. }
  678.